const express = require('express')
const router = express.Router()
const News = require('../../modules/news')
const passport = require('passport')


//passport.authenticate('jwt', { session: false }) 因为是私有接口 
// 所以请求的时候需要进行token验证 这条就是做token验证的,会跳到passport.js模块中去进行验证
/*
获取新闻信息
 */
router.get('/news',  (req, res) => {
  let page = req.query.page||1;
  let limit = req.body.pageSize || 10;
  News.find({},function (err, data) {
    if(err) return res.status(500).json({
        result: 1,
        error_info: '请求失败！'
    })
    let count = data.length
    News.find({}).skip((page - 1)*parseInt(limit)).limit(parseInt(limit)).exec(function (err, data) {
        if(err) return res.status(500).json({
            result: 1,
            error_info: '服务器繁忙，请稍后重试！'
        })
        return res.status(200).json({
            result:0,
            message:'请求成功',
            total: count,
            data: data
        })
    })
})
})
//搜索新闻消息
router.get('/news/search',  (req, res) => {
  let page = req.query.page||1;
  let limit = req.body.pageSize || 10;
  let searchKey = req.query.message;
  let key = new RegExp(searchKey);
  News.find({  $or: [{ 'content': key },{ 'title': key }]},function (err, data) {
    if(err) return res.status(500).json({
        result: 1,
        error_info: '请求失败！'
    })
    let count = data.length
    News.find({ $or: [{ 'content': key },{ 'title': key }]}).skip((page - 1)*parseInt(limit)).limit(parseInt(limit)).exec(function (err, data) {
        if(err) return res.status(500).json({
            result: 1,
            error_info: '服务器繁忙，请稍后重试！'
        })
        return res.status(200).json({
            result:0,
            message:'请求成功',
            total: count,
            data: data
        })
    })
})
})
/*
添加新闻信息
 */
router.post('/news/add', passport.authenticate('jwt', { session: false }), (req, res) => {
    // 值: 1查询条件 2 更新的内容 3 true返回更新后的值 false返回更新前的值
    new News(req.body).save()
        .then(data => {
            if (!data) {
                res.status(404).json('添加数据失败')
            } else {
                res.json({code:1,msg:'添加数据成功'})
            }
        })
        //res.status(404).json(err)
        .catch(err => res.status(404).json(err))
})
//删除新闻消息
router.delete('/news/delete', passport.authenticate('jwt', { session: false }), (req, res) => {
  
  News.deleteOne({_id:req.query.id},function (err, data) {
    if(err) return res.status(500).json({
        result: 1,
        error_info: '删除失败！'
    })
    res.status(200).json({
      result: 0,
      error_info: '删除成功！'
  })
   
})
})
//编辑新闻消息
router.put('/news/edit', passport.authenticate('jwt', { session: false }), (req, res) => {
  // 值: 1查询条件 2 更新的内容 3 true返回更新后的值 false返回更新前的值
  News.updateOne({ _id: req.body._id }, req.body)
      .then(data => {
          if (!data) {
              res.status(404).json('更新数据失败')
          } else {
              res.json({code:1,msg:'更新数据成功'})
          }
      })
      //res.status(404).json(err)
      .catch(err => res.status(404).json(err))
})
//根据id查找新闻消息
router.get('/news/info',(req, res) => {
  
  News.findOne({_id:req.query.id},function (err, data) {
    if(err) return res.status(500).json({
        result: 1,
        error_info: '查找失败！'
    })
    res.status(200).json({
      result: 0,
      data:data
      
  })
   
})
})
//新闻推荐
router.get('/news/more',  (req, res) => {
  let page = req.query.page||1;
  let limit = req.body.pageSize || 10;
  News.find({},function (err, data) {
    if(err) return res.status(500).json({
        result: 1,
        error_info: '请求失败！'
    })
    let count = data.length;
    if(count<=3){
      return res.status(200).json({
        result:0,
        data
      })
    }
    let num = [];
    while(num.length<3){
      let ran = parseInt(Math.random()*count);
      if(!num.includes(ran)){
        num.push(ran)
      }
    }
    return res.status(200).json({
      result:0,
      data:[data[num[0]],data[num[1]],data[num[2]]]
    })
})
})
module.exports = router